package top.xcxdl.rural.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import top.xcxdl.rural.entity.BackAuthRule;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author Ding
 * @since 2022-01-27
 */
@Mapper
public interface BackAuthRuleMapper extends BaseMapper<BackAuthRule> {

    /**
     * 根据权限ids获取该角色的权限树（树由sql生成）
     * 下面有两种数据类型，是为了辅助查询
     *
     * @param ruleIds 权限ids字符串拼接："1,2,3"
     * @param idsList    权限ids集合：[1,2,3]
     * @return 权限树
     */
    List<BackAuthRule> getAllRules(@Param("ruleIds") String ruleIds, @Param("list") List<String> idsList);

    /**
     * 根据权限id获取该权限树上所有子权限ids，但是不包括自己，所以需要在服务层add该参数id
     * 因为删除该权限时，子权限集将会无效，所以必须删除子权限集
     *
     * @param id 权限id
     * @return 权限ids（不包括参数id）
     */
    List<Integer> getDelIdIgnoreThisId(@Param("id") Integer id);

    /**
     * 根据权限ids删除权限
     *
     * @param allIDs 权限ids
     * @return 删除条数
     */
    int menuItemDel(@Param("list") List<Integer> allIDs);

    /**
     * 根据权限id获取该权限树上其所有的父级权限ids
     *
     * @param ruleId 权限id
     * @return 父级权限ids
     */
    List<Integer> getAllTopRules(@Param("id") Integer ruleId);

    /**
     * 根据角色id和请求接口id判断角色权限中是否通行此接口
     * @param groupId 角色id
     * @param requestUri 请求接口
     * @return 通行权限路径
     */
    String isRequestExist(@Param("groupId") Integer groupId,@Param("requestUri") String requestUri);
}
